﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2
{
    public class Wartosc
    {
        public string nazwaKolumny;
        public string wartoscOd;
        public string wartoscDo;
        public Wartosc(string nazwaKolumny, string wartoscPoczatkowa, string wartoscKoncowa = null)
        {
            this.nazwaKolumny = nazwaKolumny;
            this.wartoscOd = wartoscPoczatkowa;
            this.wartoscDo = wartoscKoncowa;
        }
    }
    public class Zapytanie
    {
        public static string Select(string nazwaTabeli, string uporzadkujWedlug, string[] wyswietlKolumny, params Wartosc[] wartosci)
        {
            string s;
            nazwaTabeli = nazwaTabeli.Trim();
            nazwaTabeli = nazwaTabeli.ToLower();
            switch (nazwaTabeli)
            {
                case "ludzie":
                    s = SelectLudzie(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "ludziewszyscy":
                    s = SelectLudzieWszyscy(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "chrzty":
                    s = SelectChrzty(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "sluby":
                    s = SelectSluby(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "zgony":
                    s = SelectZgony(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "akty":
                    s = SelectAkty(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "ksieza":
                    s = SelectKsieza(nazwaTabeli, uporzadkujWedlug, wyswietlKolumny, wartosci);
                    break;
                case "parafie":
                    s = "SELECT id, paraf AS Nazwa_Parafii FROM parafie;";
                    break;
                default:
                    s = "BŁĄD MODUŁU TWORZENIA ZAPYTAŃ\n Prawdopodobnie błąd w nazwie tabeli.";
                    break;
            }
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectLudzie(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny==null || kolumny.Length==0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = {"Imię", "Nazwisko", "Nazwisko_Panieńskie", "Wyznanie", "Data_Urodzenia", "Miejsce_Urodzenia", "Adres", "Id"};
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("parafia"))
                {
                    s = s + "b.paraf AS Parafia ";
                    opcje *= 2;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM ludzie a WHERE a.Parafia=2";
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("parafia"))
                        {
                            s += "b.paraf";
                        }
                        else
                        {
                            s = s + i.nazwaKolumny;
                        }
                        if (i.nazwaKolumny.ToLower().Equals("id"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectLudzieWszyscy(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Imię", "Nazwisko", "Nazwisko_Panieńskie", "Wyznanie", "Parafia", "Data_Urodzenia", "Miejsce_Urodzenia", "Adres", "Id" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("parafia"))
                {
                    s = s + "b.paraf AS Parafia, ";
                    opcje *= 2;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM ludzie a ";
            if(opcje%2==0)
                s = s + ", parafie b WHERE a.parafia=b.id AND NOT a.id=1 ";
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("parafia"))
                        {
                            s += "b.paraf";
                        }
                        else
                        {
                            s = s + i.nazwaKolumny;
                        }
                        if(i.nazwaKolumny.ToLower().Equals("id"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectChrzty(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Rok", "Numer", "Imię", "Nazwisko", "Nazwisko_Panieńskie", "Data_Urodzenia", "Miejsce_Urodzenia",
                                "Data_Chrztu", "Ojciec_Crzestny", "Matka_Chrzestna", "Data_Bierzmowania", "Miejsce_Bierzmowania", "Ksiądz", "Uwagi" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("imię") || i.ToLower().Equals("nazwisko") || i.ToLower().Equals("nazwisko_panieńskie") || i.ToLower().Equals("miejsce_urodzenia") || i.ToLower().Equals("data_urodzenia"))
                {
                    s = s + "b."+i+", ";
                    opcje *= 2;
                }
                else if (i.ToLower().Equals("ksiądz"))
                {
                    s = s + "'ks. ' & c.imię & \' \' & c.nazwisko AS Ksiądz, ";
                    opcje *= 3;
                }
                else if (i.ToLower().Equals("ojciec_crzestny"))
                {
                    s = s + "d.imię & \' \' & d.nazwisko AS Ojciec_Chrzestny, ";
                    opcje *= 5;
                }
                else if (i.ToLower().Equals("matka_chrzestna"))
                {
                    s = s + "e.imię & \' \' & e.nazwisko AS Matka_Chrzestna, ";
                    opcje *= 7;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM chrzty a, ";
            if (opcje%2==0)
            {
                s = s + "ludzie b, ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "ksieza c, ";
            }
            if (opcje%5==0)
            {
                s = s + "ludzie d, ";
            }
            if (opcje%7==0)
            {
                s = s + "ludzie e, ";
            }
            s = s.Remove(s.Length - 2);
            s = s + " WHERE ";
            if (opcje % 2 == 0)
            {
                s = s + "b.id = a.id AND ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "c.id = a.ks AND ";
            }
            if (opcje % 5 == 0)
            {
                s = s + "d.id = a.ojciec_chrzestny AND ";
            }
            if (opcje % 7 == 0)
            {
                s = s + "e.id = a.matka_chrzestna AND ";
            }
            s = s.Trim();
            if (s.EndsWith("AND"))
                s = s.Remove(s.LastIndexOf("AND"));
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("ojciec_chrzestny"))
                        {
                            s = s + "(d.imię & ' ' & d.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("matka_chrzestna"))
                        {
                            s = s + "(e.imię & ' ' & e.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("ksiądz"))
                        {
                            s = s + "('ks. ' & c.imię & ' ' & c.nazwisko)";
                        }
                        else
                        {
                            s = s + i.nazwaKolumny;
                        }
                        if (i.nazwaKolumny.ToLower().Equals("rok") || i.nazwaKolumny.ToLower().Equals("numer"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectSluby(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Rok", "Numer", "Narzeczony", "Narzeczona", "Data_Ślubu",
                                "Pierwszy_Świadek", "Drugi_Świadek", "Ksiądz" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("narzeczony"))
                {
                    s = s + "b.imię & \' \' & b.nazwisko AS Narzeczony, ";
                    opcje *= 2;
                }
                else if (i.ToLower().Equals("ksiądz"))
                {
                    s = s + "'ks. ' & c.imię & \' \' & c.nazwisko AS Ksiądz, ";
                    opcje *= 3;
                }
                else if (i.ToLower().Equals("narzeczona"))
                {
                    s = s + "d.imię & \' \' & d.nazwisko AS Narzeczona, ";
                    opcje *= 5;
                }
                else if (i.ToLower().Equals("pierwszy_świadek"))
                {
                    s = s + "e.imię & \' \' & e.nazwisko AS Pierwszy_Świadek, ";
                    opcje *= 7;
                }
                else if (i.ToLower().Equals("drugi_świadek"))
                {
                    s = s + "f.imię & \' \' & f.nazwisko AS Drugi_Świadek, ";
                    opcje *= 11;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM sluby a, ";
            if (opcje % 2 == 0)
            {
                s = s + "ludzie b, ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "ksieza c, ";
            }
            if (opcje % 5 == 0)
            {
                s = s + "ludzie d, ";
            }
            if (opcje % 7 == 0)
            {
                s = s + "ludzie e, ";
            }
            if (opcje % 11 == 0)
            {
                s = s + "ludzie f, ";
            }
            s = s.Remove(s.Length - 2);
            s = s + " WHERE ";
            if (opcje % 2 == 0)
            {
                s = s + "b.id = a.narzeczony AND ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "c.id = a.ks AND ";
            }
            if (opcje % 5 == 0)
            {
                s = s + "d.id = a.narzeczona AND ";
            }
            if (opcje % 7 == 0)
            {
                s = s + "e.id = a.pierwszy_świadek AND ";
            }
            if (opcje % 7 == 0)
            {
                s = s + "f.id = a.drugi_świadek AND ";
            }
            s = s.Trim();
            if (s.EndsWith("AND"))
                s = s.Remove(s.LastIndexOf("AND"));
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("narzeczony"))
                        {
                            s = s + "(b.imię & ' ' & b.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("narzeczona"))
                        {
                            s = s + "(d.imię & ' ' & d.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("pierwszy_świadek"))
                        {
                            s = s + "(e.imię & ' ' & e.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("drugi_świadek"))
                        {
                            s = s + "(f.imię & ' ' & f.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("ksiądz"))
                        {
                            s = s + "('ks. ' & c.imię & ' ' & c.nazwisko)";
                        }
                        else
                        {
                            s = s + i.nazwaKolumny;
                        }
                        if (i.nazwaKolumny.ToLower().Equals("rok") || i.nazwaKolumny.ToLower().Equals("numer"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectZgony(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Rok", "Numer", "Imię", "Nazwisko", "Data_Urodzenia", "Miejsce_Zgonu", "Data_Zgonu", "Data_Pogrzebu", "Ksiądz" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("imię") || i.ToLower().Equals("nazwisko") || i.ToLower().Equals("data_urodzenia"))
                {
                    s = s + "b." + i + ", ";
                    opcje *= 2;
                }
                else if (i.ToLower().Equals("ksiądz"))
                {
                    s = s + "'ks. ' & c.imię & \' \' & c.nazwisko AS Ksiądz, ";
                    opcje *= 3;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM zgony a, ";
            if (opcje % 2 == 0)
            {
                s = s + "ludzie b, ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "ksieza c, ";
            }
            s = s.Remove(s.Length - 2);
            s = s + " WHERE ";
            if (opcje % 2 == 0)
            {
                s = s + "b.id = a.id AND ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "c.id = a.ks AND ";
            }
            s = s.Trim();
            if (s.EndsWith("AND"))
                s = s.Remove(s.LastIndexOf("AND"));
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("ksiądz"))
                        {
                            s = s + "('ks. ' & c.imię & ' ' & c.nazwisko)";
                        }
                        else
                        {
                            s = s + i.nazwaKolumny;
                        }
                        if(i.nazwaKolumny.ToLower().Equals("rok")||i.nazwaKolumny.ToLower().Equals("numer"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectAkty(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Rodzaj", "Numer_Księgi", "Numer_Wpisu", "Imię_Petenta", "Nazwisko_Petenta", "Ksiądz", "Data", "Id" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("imię_petenta") || i.ToLower().Equals("nazwisko_petenta"))
                {
                    s = s + "b." + i.Split('_')[0] + " AS "+i+", ";
                    opcje *= 2;
                }
                else if (i.ToLower().Equals("ksiądz"))
                {
                    s = s + "'ks. ' & c.imię & \' \' & c.nazwisko AS Ksiądz, ";
                    opcje *= 3;
                }
                else if (i.ToLower().Equals("id"))
                {
                    s = s + "a.numer AS Id, ";
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM akty a, ";
            if (opcje % 2 == 0)
            {
                s = s + "ludzie b, ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "ksieza c, ";
            }
            s = s.Remove(s.Length - 2);
            s = s + " WHERE ";
            if (opcje % 2 == 0)
            {
                s = s + "b.id = a.id AND ";
            }
            if (opcje % 3 == 0)
            {
                s = s + "c.id = a.ks AND ";
            }
            s = s.Trim();
            if (s.EndsWith("AND"))
                s = s.Remove(s.LastIndexOf("AND"));
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("ksiądz"))
                        {
                            s = s + "('ks. ' & c.imię & ' ' & c.nazwisko)";
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("imię_petenta") || i.nazwaKolumny.ToLower().Equals("nazwisko_petenta"))
                        {
                            s = s + "b." + i.nazwaKolumny.Split('_')[0];
                        }
                        else if (i.nazwaKolumny.ToLower().Equals("id"))
                        {
                            s = s + "a.numer";
                        }
                        else
                        {
                            s += i.nazwaKolumny;
                        }
                        if (i.nazwaKolumny.ToLower().Equals("numer_księgi") || i.nazwaKolumny.ToLower().Equals("numer_wpisu") || i.nazwaKolumny.ToLower().Equals("id"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }


        //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


        public static string SelectKsieza(string nazwaTabeli, string uporzadkuj, string[] kolumny, Wartosc[] wartosci)
        {
            string s = "SELECT ";
            int opcje = 1;
            if (kolumny == null || kolumny.Length == 0 || (kolumny.Length == 1 && kolumny[0].Equals("*")))
            {
                string[] x = { "Imię", "Nazwisko", "Pesel", "Stanowisko", "Data_Początku", "Data_Końca", "Miejsce_Pracy", "Id" };
                kolumny = x;
            }
            foreach (string i in kolumny)
            {
                if (i.ToLower().Equals("miejsce_pracy"))
                {
                    s = s + "b.paraf AS Miejsce_Pracy, ";
                    opcje *= 2;
                }
                else
                {
                    s = s + "a." + i + ", ";
                }
            }
            s = s.Remove(s.Length - 2);
            s = s + " FROM ksieza a ";
            if (opcje % 2 == 0)
                s = s + ", parafie AS b WHERE a.miejsce_PRACY=b.numer";
            if (wartosci != null && wartosci.Length > 0)
            {
                string stara = "";
                foreach (Wartosc i in wartosci)
                {
                    if (stara.Equals(i.nazwaKolumny))
                    {
                        s += " OR ";
                    }
                    else if (stara.Equals(""))
                    {
                        s += " AND ( ";
                    }
                    else
                    {
                        s += ") AND (";
                    }
                    stara = i.nazwaKolumny;
                    if (i.wartoscDo == null)
                    {
                        if (i.nazwaKolumny.ToLower().Equals("miejsce_pracy"))
                        {
                            s += "b.paraf";
                        }
                        else
                        {
                            s = s + "a." + i.nazwaKolumny;
                        }
                        if(i.nazwaKolumny.ToLower().Equals("id"))
                            s = s + "=" + i.wartoscOd;
                        else
                            s = s + "='" + i.wartoscOd + "'";
                    }
                    else
                    {
                        s = s + "(a." + i.nazwaKolumny + ">=" + i.wartoscOd + " AND a." + i.nazwaKolumny + "<=" + i.wartoscDo + ")";
                    }
                }
                s += ")";
            }
            if (uporzadkuj != null)
            {
                s = s + " ORDER BY " + uporzadkuj;
            }
            s += ";";
            return s;
        }

    }
}
